//
//  UIFont+runtime.swift
//
//  字体运行时处理
//  Created by XFGuo on 2018/11/23.
//  Copyright © 2018 China Electronic Intelligence System Technology Co., Ltd. All rights reserved.
//

import Foundation

import UIKit

// extension UIFont{

//    public class func initializeMethod() {
//
//        let originalSelector = #selector(self.systemFont(ofSize:))
//        let swizzledSelector = #selector(self.adjustYCFontSize(fontSize:))
//
//        let originalMethod = class_getInstanceMethod(self, originalSelector)
//        let swizzledMethod = class_getInstanceMethod(self, swizzledSelector)
//
//
//        //在进行 Swizzling 的时候,需要用 class_addMethod 先进行判断一下原有类中是否有要替换方法的实现
//        let didAddMethod: Bool = class_addMethod(self, originalSelector, method_getImplementation(swizzledMethod!), method_getTypeEncoding(swizzledMethod!))
//        //如果 class_addMethod 返回 yes,说明当前类中没有要替换方法的实现,所以需要在父类中查找,这时候就用到 method_getImplemetation 去获取 class_getInstanceMethod 里面的方法实现,然后再进行 class_replaceMethod 来实现 Swizzing
//
//        if didAddMethod {
//            class_replaceMethod(self, swizzledSelector, method_getImplementation(originalMethod!), method_getTypeEncoding(originalMethod!))
//        } else {
//            method_exchangeImplementations(originalMethod!, swizzledMethod!)
//        }
//    }
//
//    @objc class func adjustYCFontSize(fontSize : CGFloat) -> UIFont {
//
//        let font = UIFont.adjustYCFontSize(fontSize: fontSize * (UIScreen.main.bounds.size.width / 375.0))
//
//        return font
//    }

// }

extension UIFont {
    
    /// 按照屏幕比例获取不同大小苹方中黑体
    ///
    /// - Parameter fontSize: 字体大小
    /// - Returns: 字体对象
    class func pingFangSCMediumFont(_ fontSize : CGFloat) -> UIFont {
//        return UIFont(name: "PingFangSC-Medium", size: fontSize)!
        return UIFont(name: ".SFUIText-Medium", size: UIFont.bigFontsize(fontSize) )! //"PingFangSC-Medium"
    }
    
    /// 按照屏幕比例获取不同大小苹方半黑体
    ///
    /// - Parameter fontSize: 字体大小
    /// - Returns: 字体对象
    class func pingFangSCSemibold(_ fontSize : CGFloat) -> UIFont {
        return UIFont(name: ".SFUIText-Semibold", size: UIFont.bigFontsize(fontSize) )!
    }
    
    /// 按照屏幕比例获取不同大小苹方正常体
    ///
    /// - Parameter fontSize: 字体大小
    /// - Returns: 字体对象
    class func pingfangSCRegular(_ fontSize : CGFloat) -> UIFont {
        return UIFont.systemFont(ofSize: UIFont.bigFontsize(fontSize))
            //UIFont(name: ".SFUIText-Regular", size: UIFont.bigFontsize(fontSize) )!
    }
    
    /// 按照屏幕比例获取不同大小获取苹方字体
    ///
    /// - Parameters:
    ///   - name: 苹方字体类型 Medium Semibold Regular
    ///   - fontSize: 字体大小
    /// - Returns: 字体对象
    class func pingfangSC(_ name: PingFangFont,_ fontSize : CGFloat) -> UIFont {
        return UIFont(name: name.rawValue, size: UIFont.bigFontsize(fontSize) )!
    }
    
   
    /// 按照屏幕比例获取不同大小字体
    ///
    /// - Parameter font: 字体大小
    /// - Returns: 获取的字体大小
    class func bigFontsize(_ font : CGFloat) -> CGFloat {
        return font * (UIScreen.main.bounds.width/375)
    }
    /// 按照屏幕比例获取字体
    ///
    /// - Parameter font: 字体大小
    /// - Returns: 字体对象
    class func reFontSystemFontSize(_ font : CGFloat) -> UIFont {
        return UIFont.systemFont(ofSize: UIFont.bigFontsize(font))
    }
    
}
